
struct ListNode {
	int val;
	ListNode* next;
	ListNode() : val(0), next(nullptr) {}
	ListNode(int x) : val(x), next(nullptr) {}
	ListNode(int x, ListNode* next) : val(x), next(next) {}
};

class Solution {
public:
	ListNode* swapPairs(ListNode* head) {
		if (!head || !head->next)return head;
		ListNode* ret = swapPairs(head->next->next);
		ListNode* newhead = head->next;
		newhead->next = head;
		head->next = ret;

		return newhead;
	}
};